import Vue from 'vue'
import App from './App.vue'
import router from './router'
import VueQuillEditor from 'vue-quill-editor'
// 导入全局的 CSS 样式
import './assets/css/global.css'
// 导入字体图标的样式表文件
import './assets/fonts/iconfont.css'
// 配置 axios 请求库
import axios from 'axios'

Vue.use(VueQuillEditor /* { default global options } */)

Vue.prototype.$http = axios
// 配置请求的根路径
axios.defaults.baseURL = 'https://www.liulongbin.top:8888/api/private/v1/'

let loadingInstance = null
// 请求拦截器
axios.interceptors.request.use(function(config) {
  // 展示 loading 效果
  loadingInstance = new Vue().$loading({
    // 全屏展示
    fullscreen: true,
    // 背景颜色
    background: 'rgba(0, 0, 0, 0.1)',
    // 设置 loading 图标
    spinner: 'el-icon-loading'
  })
  // 添加请求头
  config.headers['Authorization'] = window.sessionStorage.getItem('token') || ''
  return config
})

// 响应拦截器
axios.interceptors.response.use(function(response) {
  // 判断响应的结果是否为 “无效token”
  if (response.data.meta.msg === '无效token') {
    // 清空 sessionStorage
    window.sessionStorage.clear()
    // 判断当前的路由 path 是否等于 /login
    // 如果不相等，则强制跳转到 /login
    // 如果相等，则不再重复跳转到 /login
    if (router.currentRoute.path !== '/login') {
      router.push('/login')
    }
  }
  // 关闭 loading 效果
  loadingInstance.close()
  return response
})

// 格式化时间的全局方法
Vue.prototype.dateFormater = dtStr => {
  const dt = new Date(dtStr)
  const y = dt.getFullYear()
  const m = padZero(dt.getMonth() + 1)
  const d = padZero(dt.getDate())
  const hh = padZero(dt.getHours())
  const mm = padZero(dt.getMinutes())
  const ss = padZero(dt.getSeconds())

  return `${y}-${m}-${d} ${hh}:${mm}:${ss}`
}
function padZero(n) {
  return n > 9 ? n : '0' + n
}

Vue.config.productionTip = false

new Vue({
  router,
  render: h => h(App)
}).$mount('#app')
